package com.foreveross.proxyip.infra.utils.reg;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式的辅助类
 * @author xiangsf 2013-3-9
 *
 */
public class RegUtils {
	/**
	 * 获得指定字符串中是否有匹配的子串
	 * <p>采用Pattern.CASE_INSENSITIVE + Pattern.DOTALL方式匹配
	 * @param str 源字符串
	 * @param mode 匹配的子串正则式
	 * @return
	 */
	public static String find(String str, String mode){
		 Pattern p = Pattern.compile(mode,Pattern.CASE_INSENSITIVE + Pattern.DOTALL);
		 Matcher m = p.matcher(str);
		 String result = null;
		 if (m.find()) {
			 result = m.group(0);
		 }
		 return  result;
	}
	/**
	 * 获得指定字符串中是否有匹配的子串
	 * <p>采用指定的参数flags方式匹配
	 * @param str 源字符串
	 * @param mode 匹配的子串正则式
	 * @param group 匹配方式
	 * @return
	 */
	public static String find(String str, String mode , int flags){
		 Pattern p = Pattern.compile(mode, flags);
		 Matcher m = p.matcher(str);
		 String result = null;
		 if (m.find()) {
			 result = m.group(0);
		 }
		 return  result;
	}
	/**
	 * 获得指定字符串中是否有匹配的子串
	 * <p>采用指定的参数flags方式匹配
	 * @param str 源字符串
	 * @param mode 匹配的子串正则式
	 * @param flags 匹配方式
	 * @param group 指定匹配组位置
	 * @return
	 */
	public static String find(String str, String mode , int flags, int group){
		 Pattern p = Pattern.compile(mode, flags);
		 Matcher m = p.matcher(str);
		 String result = null;
		 if (m.find()) {
			 result = m.group(group);
		 }
		 return  result;
	}
	
	/**
	 * 获得指定字符串中是否有匹配的子串
	 * <p>采用指定的参数Pattern.CASE_INSENSITIVE + Pattern.DOTALL方式匹配
	 * @param str 源字符串
	 * @param mode 匹配的子串正则式
	 * @param flags 匹配方式
	 * @param group 指定匹配组位置
	 * @return
	 */
	public static boolean matcher(String str, String mode){
		 Pattern p = Pattern.compile(mode, Pattern.CASE_INSENSITIVE + Pattern.DOTALL);
		 Matcher m = p.matcher(str);
		 String result = null;
		 if (m.find()) {
			 result = m.group(0);
		 }
		 return  result != null && result.trim().length() > 0 ? true : false;
	}
}
